#!/usr/bin/perl -w

# Modulo para dibujar arboles javascript del tipo del explorer en una pagina html


###########################################################################
# drawJsTree
#
# Dibuja un arbol en javascript en el que las carpetas son expandibles y cada nodo
# es un enlace a una direccion URL.
#
# Recibe:
#   - referencia a un array de referencias a hashes
#   - color a utilizar para resaltar el nodo seleccionado (en formato HTML)
#   - flag de despliegue (1=arbol totalmente desplegado,0=normal)
#   - identificador del nodo raiz (opcional)
#   - identificador del nodo actual (opcional)
#
# Si no se especifica identificador de nodo raiz, en la raiz aparecera un nodo no accesible
# llamado website.
#
# Cada hash x (de los apuntados por las referencias) representa un nodo del arbol
# y tiene el siguiente formato:
# $x{nodeId} = identificador del nodo
# $x{parentNodeId} = identificador del nodo padre
# $x{nodeName} = nombre del nodo
# $x{nodeUrl} = url a la que se va al pinchar en el nodo
# $x{folderType} = tipo de carpeta, 1=normal, 2=roja, 3=verde (carpeta = nodo sin hijos)
#
# Devuelve:
#   nada
###########################################################################

sub drawJsTree {
	local($datos,$selColor,$despliegue,$idRaiz,$idActual)=@_;
	local(%nodo);

#	foreach $key (keys %ENV) {
#		print "$key => $ENV{$key}<br>\n";
#	}


	# incluir codigo y hoja de estilo
	printf <<EOF1;
<link rel="StyleSheet" href="treeJS.css" type="text/css">
	<script type="text/javascript" src="treeJS.js"></script>
	<script type="text/javascript">
		<!--
		var Tree = new Array;
		// nodeId | parentNodeId | nodeName | nodeUrl | folderType
EOF1
;

	# rellenar array de datos con los datos pasados
	foreach $i (0..$#{$datos}) {
		%nodo=%{$datos->[$i]};
		if ($i==0)
		{
		  if ($nodo{nodeName} eq 'Tema raiz')
		  {
		    chop($nodo{nodeName});
		  }
		}
                #$carac = chop($nodo{nodeName});
					 #if ($carac ne '')
                #{$nodo{nodeName} = $nodo{nodeName} . $carac;}
						
		print "\t\tTree[$i]  = \"$nodo{nodeId}|$nodo{parentNodeId}|$nodo{nodeName}|$nodo{nodeUrl}|$nodo{folderType}\";\n";
	}
	print "\t\t//-->\n</script>\n";

	# dibujar arbol
	print <<EOF1;
<div id="tree">
<script type="text/javascript">
<!--
EOF1
;
	print "\tcreateTree(Tree,'$selColor',$despliegue";
	print ",$idRaiz" if ($idRaiz);
	print ",$idActual" if ($idActual);
	print ")\n";
	print <<EOF1;
//-->
</script>
</div>
EOF1
;

}

return 1;
